home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / dev / gcc / gcc260_base.lha / gnu / os-include / inline / utility.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-21  |  16.4 KB  |  543 lines

  1. #ifndef _INLINE_UTILITY_H
  2. #define _INLINE_UTILITY_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL 
  11. #define BASE_EXT_DECL0 extern struct UtilityBase*  UtilityBase;
  12. #endif
  13. #ifndef BASE_PAR_DECL
  14. #define BASE_PAR_DECL
  15. #define BASE_PAR_DECL0 void
  16. #endif
  17. #ifndef BASE_NAME
  18. #define BASE_NAME UtilityBase
  19. #endif
  20.  
  21. BASE_EXT_DECL0
  22.  
  23. static __inline BOOL 
  24. AddNamedObject (BASE_PAR_DECL struct NamedObject *nameSpace,struct NamedObject *object)
  25. {
  26.   BASE_EXT_DECL
  27.   register BOOL  _res  __asm("d0");
  28.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  29.   register struct NamedObject *a0 __asm("a0") = nameSpace;
  30.   register struct NamedObject *a1 __asm("a1") = object;
  31.   __asm __volatile ("jsr a6@(-0xde)"
  32.   : "=r" (_res)
  33.   : "r" (a6), "r" (a0), "r" (a1)
  34.   : "a0","a1","d0","d1", "memory");
  35.   return _res;
  36. }
  37. static __inline struct NamedObject *
  38. AllocNamedObjectA (BASE_PAR_DECL STRPTR name,struct TagItem *tagList)
  39. {
  40.   BASE_EXT_DECL
  41.   register struct NamedObject * _res  __asm("d0");
  42.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  43.   register STRPTR a0 __asm("a0") = name;
  44.   register struct TagItem *a1 __asm("a1") = tagList;
  45.   __asm __volatile ("jsr a6@(-0xe4)"
  46.   : "=r" (_res)
  47.   : "r" (a6), "r" (a0), "r" (a1)
  48.   : "a0","a1","d0","d1", "memory");
  49.   return _res;
  50. }
  51. static __inline struct TagItem *
  52. AllocateTagItems (BASE_PAR_DECL unsigned long numTags)
  53. {
  54.   BASE_EXT_DECL
  55.   register struct TagItem * _res  __asm("d0");
  56.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  57.   register unsigned long d0 __asm("d0") = numTags;
  58.   __asm __volatile ("jsr a6@(-0x42)"
  59.   : "=r" (_res)
  60.   : "r" (a6), "r" (d0)
  61.   : "a0","a1","d0","d1", "memory");
  62.   return _res;
  63. }
  64. static __inline void 
  65. Amiga2Date (BASE_PAR_DECL unsigned long seconds,struct ClockData *result)
  66. {
  67.   BASE_EXT_DECL
  68.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  69.   register unsigned long d0 __asm("d0") = seconds;
  70.   register struct ClockData *a0 __asm("a0") = result;
  71.   __asm __volatile ("jsr a6@(-0x78)"
  72.   : /* no output */
  73.   : "r" (a6), "r" (d0), "r" (a0)
  74.   : "a0","a1","d0","d1", "memory");
  75. }
  76. static __inline void 
  77. ApplyTagChanges (BASE_PAR_DECL struct TagItem *list,struct TagItem *changeList)
  78. {
  79.   BASE_EXT_DECL
  80.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  81.   register struct TagItem *a0 __asm("a0") = list;
  82.   register struct TagItem *a1 __asm("a1") = changeList;
  83.   __asm __volatile ("jsr a6@(-0xba)"
  84.   : /* no output */
  85.   : "r" (a6), "r" (a0), "r" (a1)
  86.   : "a0","a1","d0","d1", "memory");
  87. }
  88. static __inline LONG 
  89. AttemptRemNamedObject (BASE_PAR_DECL struct NamedObject *object)
  90. {
  91.   BASE_EXT_DECL
  92.   register LONG  _res  __asm("d0");
  93.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  94.   register struct NamedObject *a0 __asm("a0") = object;
  95.   __asm __volatile ("jsr a6@(-0xea)"
  96.   : "=r" (_res)
  97.   : "r" (a6), "r" (a0)
  98.   : "a0","a1","d0","d1", "memory");
  99.   return _res;
  100. }
  101. static __inline ULONG 
  102. CallHookPkt (BASE_PAR_DECL struct Hook *hook,APTR object,APTR paramPacket)
  103. {
  104.   BASE_EXT_DECL
  105.   register ULONG  _res  __asm("d0");
  106.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  107.   register struct Hook *a0 __asm("a0") = hook;
  108.   register APTR a2 __asm("a2") = object;
  109.   register APTR a1 __asm("a1") = paramPacket;
  110.   __asm __volatile ("jsr a6@(-0x66)"
  111.   : "=r" (_res)
  112.   : "r" (a6), "r" (a0), "r" (a2), "r" (a1)
  113.   : "a0","a1","a2","d0","d1", "memory");
  114.   return _res;
  115. }
  116. static __inline ULONG 
  117. CheckDate (BASE_PAR_DECL struct ClockData *date)
  118. {
  119.   BASE_EXT_DECL
  120.   register ULONG  _res  __asm("d0");
  121.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  122.   register struct ClockData *a0 __asm("a0") = date;
  123.   __asm __volatile ("jsr a6@(-0x84)"
  124.   : "=r" (_res)
  125.   : "r" (a6), "r" (a0)
  126.   : "a0","a1","d0","d1", "memory");
  127.   return _res;
  128. }
  129. static __inline struct TagItem *
  130. CloneTagItems (BASE_PAR_DECL struct TagItem *tagList)
  131. {
  132.   BASE_EXT_DECL
  133.   register struct TagItem * _res  __asm("d0");
  134.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  135.   register struct TagItem *a0 __asm("a0") = tagList;
  136.   __asm __volatile ("jsr a6@(-0x48)"
  137.   : "=r" (_res)
  138.   : "r" (a6), "r" (a0)
  139.   : "a0","a1","d0","d1", "memory");
  140.   return _res;
  141. }
  142. static __inline ULONG 
  143. Date2Amiga (BASE_PAR_DECL struct ClockData *date)
  144. {
  145.   BASE_EXT_DECL
  146.   register ULONG  _res  __asm("d0");
  147.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  148.   register struct ClockData *a0 __asm("a0") = date;
  149.   __asm __volatile ("jsr a6@(-0x7e)"
  150.   : "=r" (_res)
  151.   : "r" (a6), "r" (a0)
  152.   : "a0","a1","d0","d1", "memory");
  153.   return _res;
  154. }
  155. static __inline void 
  156. FilterTagChanges (BASE_PAR_DECL struct TagItem *changeList,struct TagItem *originalList,unsigned long apply)
  157. {
  158.   BASE_EXT_DECL
  159.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  160.   register struct TagItem *a0 __asm("a0") = changeList;
  161.   register struct TagItem *a1 __asm("a1") = originalList;
  162.   register unsigned long d0 __asm("d0") = apply;
  163.   __asm __volatile ("jsr a6@(-0x36)"
  164.   : /* no output */
  165.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  166.   : "a0","a1","d0","d1", "memory");
  167. }
  168. static __inline ULONG 
  169. FilterTagItems (BASE_PAR_DECL struct TagItem *tagList,Tag *filterArray,unsigned long logic)
  170. {
  171.   BASE_EXT_DECL
  172.   register ULONG  _res  __asm("d0");
  173.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  174.   register struct TagItem *a0 __asm("a0") = tagList;
  175.   register Tag *a1 __asm("a1") = filterArray;
  176.   register unsigned long d0 __asm("d0") = logic;
  177.   __asm __volatile ("jsr a6@(-0x60)"
  178.   : "=r" (_res)
  179.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  180.   : "a0","a1","d0","d1", "memory");
  181.   return _res;
  182. }
  183. static __inline struct NamedObject *
  184. FindNamedObject (BASE_PAR_DECL struct NamedObject *nameSpace,STRPTR name,struct NamedObject *lastObject)
  185. {
  186.   BASE_EXT_DECL
  187.   register struct NamedObject * _res  __asm("d0");
  188.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  189.   register struct NamedObject *a0 __asm("a0") = nameSpace;
  190.   register STRPTR a1 __asm("a1") = name;
  191.   register struct NamedObject *a2 __asm("a2") = lastObject;
  192.   __asm __volatile ("jsr a6@(-0xf0)"
  193.   : "=r" (_res)
  194.   : "r" (a6), "r" (a0), "r" (a1), "r" (a2)
  195.   : "a0","a1","a2","d0","d1", "memory");
  196.   return _res;
  197. }
  198. static __inline struct TagItem *
  199. FindTagItem (BASE_PAR_DECL Tag tagVal,struct TagItem *tagList)
  200. {
  201.   BASE_EXT_DECL
  202.   register struct TagItem * _res  __asm("d0");
  203.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  204.   register Tag d0 __asm("d0") = tagVal;
  205.   register struct TagItem *a0 __asm("a0") = tagList;
  206.   __asm __volatile ("jsr a6@(-0x1e)"
  207.   : "=r" (_res)
  208.   : "r" (a6), "r" (d0), "r" (a0)
  209.   : "a0","a1","d0","d1", "memory");
  210.   return _res;
  211. }
  212. static __inline void 
  213. FreeNamedObject (BASE_PAR_DECL struct NamedObject *object)
  214. {
  215.   BASE_EXT_DECL
  216.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  217.   register struct NamedObject *a0 __asm("a0") = object;
  218.   __asm __volatile ("jsr a6@(-0xf6)"
  219.   : /* no output */
  220.   : "r" (a6), "r" (a0)
  221.   : "a0","a1","d0","d1", "memory");
  222. }
  223. static __inline void 
  224. FreeTagItems (BASE_PAR_DECL struct TagItem *tagList)
  225. {
  226.   BASE_EXT_DECL
  227.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  228.   register struct TagItem *a0 __asm("a0") = tagList;
  229.   __asm __volatile ("jsr a6@(-0x4e)"
  230.   : /* no output */
  231.   : "r" (a6), "r" (a0)
  232.   : "a0","a1","d0","d1", "memory");
  233. }
  234. static __inline ULONG 
  235. GetTagData (BASE_PAR_DECL Tag tagValue,unsigned long defaultVal,struct TagItem *tagList)
  236. {
  237.   BASE_EXT_DECL
  238.   register ULONG  _res  __asm("d0");
  239.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  240.   register Tag d0 __asm("d0") = tagValue;
  241.   register unsigned long d1 __asm("d1") = defaultVal;
  242.   register struct TagItem *a0 __asm("a0") = tagList;
  243.   __asm __volatile ("jsr a6@(-0x24)"
  244.   : "=r" (_res)
  245.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  246.   : "a0","a1","d0","d1", "memory");
  247.   return _res;
  248. }
  249. static __inline ULONG 
  250. GetUniqueID (BASE_PAR_DECL0)
  251. {
  252.   BASE_EXT_DECL
  253.   register ULONG  _res  __asm("d0");
  254.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  255.   __asm __volatile ("jsr a6@(-0x10e)"
  256.   : "=r" (_res)
  257.   : "r" (a6)
  258.   : "a0","a1","d0","d1", "memory");
  259.   return _res;
  260. }
  261. static __inline void 
  262. MapTags (BASE_PAR_DECL struct TagItem *tagList,struct TagItem *mapList,unsigned long mapType)
  263. {
  264.   BASE_EXT_DECL
  265.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  266.   register struct TagItem *a0 __asm("a0") = tagList;
  267.   register struct TagItem *a1 __asm("a1") = mapList;
  268.   register unsigned long d0 __asm("d0") = mapType;
  269.   __asm __volatile ("jsr a6@(-0x3c)"
  270.   : /* no output */
  271.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  272.   : "a0","a1","d0","d1", "memory");
  273. }
  274. static __inline STRPTR 
  275. NamedObjectName (BASE_PAR_DECL struct NamedObject *object)
  276. {
  277.   BASE_EXT_DECL
  278.   register STRPTR  _res  __asm("d0");
  279.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  280.   register struct NamedObject *a0 __asm("a0") = object;
  281.   __asm __volatile ("jsr a6@(-0xfc)"
  282.   : "=r" (_res)
  283.   : "r" (a6), "r" (a0)
  284.   : "a0","a1","d0","d1", "memory");
  285.   return _res;
  286. }
  287. static __inline struct TagItem *
  288. NextTagItem (BASE_PAR_DECL struct TagItem **tagListPtr)
  289. {
  290.   BASE_EXT_DECL
  291.   register struct TagItem * _res  __asm("d0");
  292.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  293.   register struct TagItem **a0 __asm("a0") = tagListPtr;
  294.   __asm __volatile ("jsr a6@(-0x30)"
  295.   : "=r" (_res)
  296.   : "r" (a6), "r" (a0)
  297.   : "a0","a1","d0","d1", "memory");
  298.   return _res;
  299. }
  300. static __inline ULONG 
  301. PackBoolTags (BASE_PAR_DECL unsigned long initialFlags,struct TagItem *tagList,struct TagItem *boolMap)
  302. {
  303.   BASE_EXT_DECL
  304.   register ULONG  _res  __asm("d0");
  305.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  306.   register unsigned long d0 __asm("d0") = initialFlags;
  307.   register struct TagItem *a0 __asm("a0") = tagList;
  308.   register struct TagItem *a1 __asm("a1") = boolMap;
  309.   __asm __volatile ("jsr a6@(-0x2a)"
  310.   : "=r" (_res)
  311.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  312.   : "a0","a1","d0","d1", "memory");
  313.   return _res;
  314. }
  315. static __inline ULONG 
  316. PackStructureTags (BASE_PAR_DECL APTR pack,ULONG *packTable,struct TagItem *tagList)
  317. {
  318.   BASE_EXT_DECL
  319.   register ULONG  _res  __asm("d0");
  320.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  321.   register APTR a0 __asm("a0") = pack;
  322.   register ULONG *a1 __asm("a1") = packTable;
  323.   register struct TagItem *a2 __asm("a2") = tagList;
  324.   __asm __volatile ("jsr a6@(-0xd2)"
  325.   : "=r" (_res)
  326.   : "r" (a6), "r" (a0), "r" (a1), "r" (a2)
  327.   : "a0","a1","a2","d0","d1", "memory");
  328.   return _res;
  329. }
  330. static __inline void 
  331. RefreshTagItemClones (BASE_PAR_DECL struct TagItem *clone,struct TagItem *original)
  332. {
  333.   BASE_EXT_DECL
  334.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  335.   register struct TagItem *a0 __asm("a0") = clone;
  336.   register struct TagItem *a1 __asm("a1") = original;
  337.   __asm __volatile ("jsr a6@(-0x54)"
  338.   : /* no output */
  339.   : "r" (a6), "r" (a0), "r" (a1)
  340.   : "a0","a1","d0","d1", "memory");
  341. }
  342. static __inline void 
  343. ReleaseNamedObject (BASE_PAR_DECL struct NamedObject *object)
  344. {
  345.   BASE_EXT_DECL
  346.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  347.   register struct NamedObject *a0 __asm("a0") = object;
  348.   __asm __volatile ("jsr a6@(-0x102)"
  349.   : /* no output */
  350.   : "r" (a6), "r" (a0)
  351.   : "a0","a1","d0","d1", "memory");
  352. }
  353. static __inline void 
  354. RemNamedObject (BASE_PAR_DECL struct NamedObject *object,struct Message *message)
  355. {
  356.   BASE_EXT_DECL
  357.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  358.   register struct NamedObject *a0 __asm("a0") = object;
  359.   register struct Message *a1 __asm("a1") = message;
  360.   __asm __volatile ("jsr a6@(-0x108)"
  361.   : /* no output */
  362.   : "r" (a6), "r" (a0), "r" (a1)
  363.   : "a0","a1","d0","d1", "memory");
  364. }
  365. static __inline LONG 
  366. SDivMod32 (BASE_PAR_DECL long dividend,long divisor)
  367. {
  368.   BASE_EXT_DECL
  369.   register LONG  _res  __asm("d0");
  370.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  371.   register long d0 __asm("d0") = dividend;
  372.   register long d1 __asm("d1") = divisor;
  373.   __asm __volatile ("jsr a6@(-0x96)"
  374.   : "=r" (_res)
  375.   : "r" (a6), "r" (d0), "r" (d1)
  376.   : "a0","a1","d0","d1", "memory");
  377.   return _res;
  378. }
  379. static __inline LONG 
  380. SMult32 (BASE_PAR_DECL long arg1,long arg2)
  381. {
  382.   BASE_EXT_DECL
  383.   register LONG  _res  __asm("d0");
  384.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  385.   register long d0 __asm("d0") = arg1;
  386.   register long d1 __asm("d1") = arg2;
  387.   __asm __volatile ("jsr a6@(-0x8a)"
  388.   : "=r" (_res)
  389.   : "r" (a6), "r" (d0), "r" (d1)
  390.   : "a0","a1","d0","d1", "memory");
  391.   return _res;
  392. }
  393. static __inline LONG 
  394. SMult64 (BASE_PAR_DECL long arg1,long arg2)
  395. {
  396.   BASE_EXT_DECL
  397.   register LONG  _res  __asm("d0");
  398.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  399.   register long d0 __asm("d0") = arg1;
  400.   register long d1 __asm("d1") = arg2;
  401.   __asm __volatile ("jsr a6@(-0xc6)"
  402.   : "=r" (_res)
  403.   : "r" (a6), "r" (d0), "r" (d1)
  404.   : "a0","a1","d0","d1", "memory");
  405.   return _res;
  406. }
  407. static __inline LONG 
  408. Stricmp (BASE_PAR_DECL STRPTR string1,STRPTR string2)
  409. {
  410.   BASE_EXT_DECL
  411.   register LONG  _res  __asm("d0");
  412.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  413.   register STRPTR a0 __asm("a0") = string1;
  414.   register STRPTR a1 __asm("a1") = string2;
  415.   __asm __volatile ("jsr a6@(-0xa2)"
  416.   : "=r" (_res)
  417.   : "r" (a6), "r" (a0), "r" (a1)
  418.   : "a0","a1","d0","d1", "memory");
  419.   return _res;
  420. }
  421. static __inline LONG 
  422. Strnicmp (BASE_PAR_DECL STRPTR string1,STRPTR string2,long length)
  423. {
  424.   BASE_EXT_DECL
  425.   register LONG  _res  __asm("d0");
  426.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  427.   register STRPTR a0 __asm("a0") = string1;
  428.   register STRPTR a1 __asm("a1") = string2;
  429.   register long d0 __asm("d0") = length;
  430.   __asm __volatile ("jsr a6@(-0xa8)"
  431.   : "=r" (_res)
  432.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  433.   : "a0","a1","d0","d1", "memory");
  434.   return _res;
  435. }
  436. static __inline BOOL 
  437. TagInArray (BASE_PAR_DECL Tag tagValue,Tag *tagArray)
  438. {
  439.   BASE_EXT_DECL
  440.   register BOOL  _res  __asm("d0");
  441.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  442.   register Tag d0 __asm("d0") = tagValue;
  443.   register Tag *a0 __asm("a0") = tagArray;
  444.   __asm __volatile ("jsr a6@(-0x5a)"
  445.   : "=r" (_res)
  446.   : "r" (a6), "r" (d0), "r" (a0)
  447.   : "a0","a1","d0","d1", "memory");
  448.   return _res;
  449. }
  450. static __inline UBYTE 
  451. ToLower (BASE_PAR_DECL unsigned long character)
  452. {
  453.   BASE_EXT_DECL
  454.   register UBYTE  _res  __asm("d0");
  455.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  456.   register unsigned long d0 __asm("d0") = character;
  457.   __asm __volatile ("jsr a6@(-0xb4)"
  458.   : "=r" (_res)
  459.   : "r" (a6), "r" (d0)
  460.   : "a0","a1","d0","d1", "memory");
  461.   return _res;
  462. }
  463. static __inline UBYTE 
  464. ToUpper (BASE_PAR_DECL unsigned long character)
  465. {
  466.   BASE_EXT_DECL
  467.   register UBYTE  _res  __asm("d0");
  468.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  469.   register unsigned long d0 __asm("d0") = character;
  470.   __asm __volatile ("jsr a6@(-0xae)"
  471.   : "=r" (_res)
  472.   : "r" (a6), "r" (d0)
  473.   : "a0","a1","d0","d1", "memory");
  474.   return _res;
  475. }
  476. static __inline ULONG 
  477. UDivMod32 (BASE_PAR_DECL unsigned long dividend,unsigned long divisor)
  478. {
  479.   BASE_EXT_DECL
  480.   register ULONG  _res  __asm("d0");
  481.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  482.   register unsigned long d0 __asm("d0") = dividend;
  483.   register unsigned long d1 __asm("d1") = divisor;
  484.   __asm __volatile ("jsr a6@(-0x9c)"
  485.   : "=r" (_res)
  486.   : "r" (a6), "r" (d0), "r" (d1)
  487.   : "a0","a1","d0","d1", "memory");
  488.   return _res;
  489. }
  490. static __inline ULONG 
  491. UMult32 (BASE_PAR_DECL unsigned long arg1,unsigned long arg2)
  492. {
  493.   BASE_EXT_DECL
  494.   register ULONG  _res  __asm("d0");
  495.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  496.   register unsigned long d0 __asm("d0") = arg1;
  497.   register unsigned long d1 __asm("d1") = arg2;
  498.   __asm __volatile ("jsr a6@(-0x90)"
  499.   : "=r" (_res)
  500.   : "r" (a6), "r" (d0), "r" (d1)
  501.   : "a0","a1","d0","d1", "memory");
  502.   return _res;
  503. }
  504. static __inline ULONG 
  505. UMult64 (BASE_PAR_DECL unsigned long arg1,unsigned long arg2)
  506. {
  507.   BASE_EXT_DECL
  508.   register ULONG  _res  __asm("d0");
  509.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  510.   register unsigned long d0 __asm("d0") = arg1;
  511.   register unsigned long d1 __asm("d1") = arg2;
  512.   __asm __volatile ("jsr a6@(-0xcc)"
  513.   : "=r" (_res)
  514.   : "r" (a6), "r" (d0), "r" (d1)
  515.   : "a0","a1","d0","d1", "memory");
  516.   return _res;
  517. }
  518. static __inline ULONG 
  519. UnpackStructureTags (BASE_PAR_DECL APTR pack,ULONG *packTable,struct TagItem *tagList)
  520. {
  521.   BASE_EXT_DECL
  522.   register ULONG  _res  __asm("d0");
  523.   register struct UtilityBase* a6 __asm("a6") = BASE_NAME;
  524.   register APTR a0 __asm("a0") = pack;
  525.   register ULONG *a1 __asm("a1") = packTable;
  526.   register struct TagItem *a2 __asm("a2") = tagList;
  527.   __asm __volatile ("jsr a6@(-0xd8)"
  528.   : "=r" (_res)
  529.   : "r" (a6), "r" (a0), "r" (a1), "r" (a2)
  530.   : "a0","a1","a2","d0","d1", "memory");
  531.   return _res;
  532. }
  533.  
  534. #undef BASE_EXT_DECL
  535. #undef BASE_EXT_DECL0
  536. #undef BASE_PAR_DECL
  537. #undef BASE_PAR_DECL0
  538. #undef BASE_NAME
  539.  
  540. __END_DECLS
  541.  
  542. #endif /* _INLINE_UTILITY_H */
  543.